Many customers of large computer systems purchase systems or subsystems having features which can be enabled via the purchase of additional Licensed Machine Code (LMC) features. For example, a customer may install an IBM® Enterprise Storage Server® (ESS) Model 800 with 6 TB of disk capacity and then purchase additional LMC feature codes for the FlashCopy function which provides the ability to make an instantaneous copy of data between to extents on two or more disks. The LMC feature codes for the advanced functions may be ordered on a given machine serial number via specific feature codes for a specific advanced function at a specific capacity point (e.g. 1, 2, 5, 10, 20, 30, or 40 TBs). Each feature code has a different pricing and upgrades between one enablement level and the next are net priced at the difference between the from-level price and the to-level price. Once ordered, the features codes are stored in the ordering system against a specific machine serial number and the service organization has the capability through an internet web interface to download an LMC feature file to a diskette that is encrypted with a machine serial number dependent encryption key. The data in the file contains a machine serial number and indicators for the specific feature codes ordered. This diskette is loaded on a given machine, decrypted by the machine, validated by the machine, and applied by the machine. Changes to the feature code set could be applied to the machine by repeating this process after ordering (or removing) additional LMC features. The machine validated the LMC feature file by ensuring that the decrypted file contained the machine serial number and additionally that there were no LMC features specified with a capacity enablement point less than the installed capacity of the type that the particular feature was applicable to. For example, in the case of the FlashCopy LMC feature, the amount of capacity enablement was applicable to all capacity configured on the machine. In the case of the XRC LMC feature, the amount of LMC feature enablement was applicable to only the CKD capacity configured on the machine. Once the LMC feature file was validated and applied, any LMC feature with a capacity enablement established a maximum limit on the amount of the applicable capacity which could be configured. The storage installed in the machine is considered configured when the disks are configured into an array and the physical capacity of disks used in the array are counted against the configured capacity. LMC features not indicated in the LMC feature file are not enabled on a given machine. LMC features with a defined capacity limit are enabled on a given machine and are available on all configured capacity of the type that the advanced function applies to.
The above described scheme has some limitations which should be overcome to address more flexible marketing offerings and to address capabilities found in follow-on products. The following characteristics are desirable:                a) an enablement mechanism that allows a more granular level of capacity enablement over a greater range of capacity with out requiring a corresponding increase in the number of product feature codes;        b) an enablement mechanism that allows advanced functions to be designated for more than one capacity type option. For instance, it would be desirable to selectively enable the FlashCopy function on just the fixed block storage, just the CKD storage, or on both the fixed block and CKD storage;        c) an ability to allocate the capacity enablement of a given advanced function across multiple virtual machine images installed on the machine (the current ESS Model 800 had only a single machine image but follow-on products may have more than one, each identified by a unique serial number derived from the machine serial number and each capable of appearing to attached hosts as a separate machine). This allocation should be managed in a way that the total of the enablement on all machine images does not exceed the enablement purchased for the machine;        d) an ability to perform enablement through customer accessible interfaces that do not depend on a particular digital medium, including supporting the capability for a human to enter the enablement through the product supported GUI interfaces;        e) an ability to manage the enablement of a given function without having to manage or affect other independent functions;        f) an ability to provide the customer access to the set of features enabled on his machine in clear text from a generally accessible interface and without allowing general access to the installed features across the entire machine population; and        g) an ability to maintain the existing characteristics of the current implementation relative to providing a machine specific enablement that prevents enablement of functions without prior purchase.        